package main

import (
	"fmt"
	"runtime"
	"time"
)

// #1
//func main() {
//	for i := 0; i < 10; i++ {
//		go func(i int) {
//			for {
//				fmt.Printf("Hello from goroutine %d\n", i)
//			}
//		}(i)
//	}
//
//	time.Sleep(time.Millisecond)
//}

// 非抢占式
func main() {
	var a [10]int
	for i := 0; i < 10; i++ {
		go func(i int) { // i 必须传入，否则当main函数得到执行时，i=10，a数组会越界
			for {
				a[i]++            // go1.13不能交出控制权，main函数不会得到执行，造成死机
				runtime.Gosched() // 让其他goroutine执行
			}
		}(i)
	}

	time.Sleep(time.Millisecond)
	fmt.Println(a)
}
